﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Yottamud_2013_v3_Main
{
    public class ResourceTypes
    {
        public const string NPC_FILE = "Npc_Default.xml";
        public const string ITEM_FILE = "Item_Default.xml";
        public const string SPELL_FILE = "Spell_Default.xml";
        public const string ROOM_FILE = "Room_Default.xml";
        public const string SYSTEM_FILE = "SystemSettings.xml";
        public const string YOTTA_STORAGE = @"C:\Yottamud Client\Resource Files\";

        public enum AlignmentType
        {
            GOOD, 
            EVIL,
            CHAOTIC_EVIL,
            NEUTRAL,
            LAWFUL_GOOD,
            NEUTRAL_EVIL,
            LAWFUL_EVIL
        }

        public class ShopType
        {
            public int ShopNumber { get; set; }
            public string ShopName { get; set; }
            public int ShopTypeID { get; set; }
            public int MinLevel { get; set; }
            public int MaxLevel { get; set; }
            public int Markup { get; set; }
            public int ClassRestriction { get; set; }
            public int Item_0 { get; set; }
            public int Max_0 { get; set; }
            public int Time_0 { get; set; }
            public int Amount_0 { get; set; }
            public int Percent_0 { get; set; }
            public int Item_1 { get; set; }
            public int Max_1 { get; set; }
            public int Time_1 { get; set; }
            public int Amount_1 { get; set; }
            public int Percent_1 { get; set; }
            public int Item_2 { get; set; }
            public int Max_2 { get; set; }
            public int Time_2 { get; set; }
            public int Amount_2 { get; set; }
            public int Percent_2 { get; set; }
            public int Item_3 { get; set; }
            public int Max_3 { get; set; }
            public int Time_3 { get; set; }
            public int Amount_3 { get; set; }
            public int Percent_3 { get; set; }
            public int Item_4 { get; set; }
            public int Max_4 { get; set; }
            public int Time_4 { get; set; }
            public int Amount_4 { get; set; }
            public int Percent_4 { get; set; }
            public int Item_5 { get; set; }
            public int Max_5 { get; set; }
            public int Time_5 { get; set; }
            public int Amount_5 { get; set; }
            public int Percent_5 { get; set; }
            public int Item_6 { get; set; }
            public int Max_6 { get; set; }
            public int Time_6 { get; set; }
            public int Amount_6 { get; set; }
            public int Percent_6 { get; set; }
            public int Item_7 { get; set; }
            public int Max_7 { get; set; }
            public int Time_7 { get; set; }
            public int Amount_7 { get; set; }
            public int Percent_7 { get; set; }
            public int Item_8 { get; set; }
            public int Max_8 { get; set; }
            public int Time_8 { get; set; }
            public int Amount_8 { get; set; }
            public int Percent_8 { get; set; }
            public int Item_9 { get; set; }
            public int Max_9 { get; set; }
            public int Time_9 { get; set; }
            public int Amount_9 { get; set; }
            public int Percent_9 { get; set; }
            public int Item_10 { get; set; }
            public int Max_10 { get; set; }
            public int Time_10 { get; set; }
            public int Amount_10 { get; set; }
            public int Percent_10 { get; set; }
            public int Item_11 { get; set; }
            public int Max_11 { get; set; }
            public int Time_11 { get; set; }
            public int Amount_11 { get; set; }
            public int Percent_11 { get; set; }
            public int Item_12 { get; set; }
            public int Max_12 { get; set; }
            public int Time_12 { get; set; }
            public int Amount_12 { get; set; }
            public int Percent_12 { get; set; }
            public int Item_13 { get; set; }
            public int Max_13 { get; set; }
            public int Time_13 { get; set; }
            public int Amount_13 { get; set; }
            public int Percent_13 { get; set; }
            public int Item_14 { get; set; }
            public int Max_14 { get; set; }
            public int Time_14 { get; set; }
            public int Amount_14 { get; set; }
            public int Percent_14 { get; set; }
            public int Item_15 { get; set; }
            public int Max_15 { get; set; }
            public int Time_15 { get; set; }
            public int Amount_15 { get; set; }
            public int Percent_15 { get; set; }
            public int Item_16 { get; set; }
            public int Max_16 { get; set; }
            public int Time_16 { get; set; }
            public int Amount_16 { get; set; }
            public int Percent_16 { get; set; }
            public int Item_17 { get; set; }
            public int Max_17 { get; set; }
            public int Time_17 { get; set; }
            public int Amount_17 { get; set; }
            public int Percent_17 { get; set; }
            public int Item_18 { get; set; }
            public int Max_18 { get; set; }
            public int Time_18 { get; set; }
            public int Amount_18 { get; set; }
            public int Percent_18 { get; set; }
            public int Item_19 { get; set; }
            public int Max_19 { get; set; }
            public int Time_19 { get; set; }
            public int Amount_19 { get; set; }
            public int Percent_19 { get; set; }
            public int InGame { get; set; }
            public string AssignedTo { get; set; }


            public List<ItemType> ItemList = new List<ItemType>();

        }

        public class NpcType
        {
            public int Number { get; set; }
            public string Name { get; set; }
            public int Weapon { get; set; }
            public int Armour { get; set; }
            public int DamageResist { get; set; }
            public int Follow { get; set; }
            public int MagicResist { get; set; }
            public int Experience { get; set; }
            public int ExperienceMulti { get; set; }
            public int HitPoints { get; set; }
            public int GreetText { get; set; }
            public int HPRegen { get; set; }
            public int CharmLVL { get; set; }
            public int Type { get; set; }
            public int Undead { get; set; }
            public int Align { get; set; }
            public int RegenTime { get; set; }
            public int Runic { get; set; }
            public int Platinum { get; set; }
            public int Gold { get; set; }
            public int Silver { get; set; }
            public int Copper { get; set; }
            public int DeathSpell { get; set; }
            public int CreateSpell { get; set; }
            public int AttType_0 { get; set; }
            public int AttAcc_0 { get; set; }
            public int AttPercent_0 { get; set; }
            public int AttMin_0 { get; set; }
            public int AttMax_0 { get; set; }
            public int AttEnergy_0 { get; set; }
            public int AttHitSpell_0 { get; set; }
            public int AttType_1 { get; set; }
            public int AttAcc_1 { get; set; }
            public int AttPercent_1 { get; set; }
            public int AttMin_1 { get; set; }
            public int AttMax_1 { get; set; }
            public int AttEnergy_1 { get; set; }
            public int AttHitSpell_1 { get; set; }
            public int AttType_2 { get; set; }
            public int AttAcc_2 { get; set; }
            public int AttPercent_2 { get; set; }
            public int AttMin_2 { get; set; }
            public int AttMax_2 { get; set; }
            public int AttEnergy_2 { get; set; }
            public int AttHitSpell_2 { get; set; }
            public int AttType_3 { get; set; }
            public int AttAcc_3 { get; set; }
            public int AttPercent_3 { get; set; }
            public int AttMin_3 { get; set; }
            public int AttMax_3 { get; set; }
            public int AttEnergy_3 { get; set; }
            public int AttHitSpell_3 { get; set; }
            public int AttType_4 { get; set; }
            public int AttAcc_4 { get; set; }
            public int AttPercent_4 { get; set; }
            public int AttMin_4 { get; set; }
            public int AttMax_4 { get; set; }
            public int AttEnergy_4 { get; set; }
            public int AttHitSpell_4 { get; set; }
            public int MidSpell_0 { get; set; }
            public int MidSpellPercent_0 { get; set; }
            public int MidSpellLVL_0 { get; set; }
            public int MidSpell_1 { get; set; }
            public int MidSpellPercent_1 { get; set; }
            public int MidSpellLVL_1 { get; set; }
            public int MidSpell_2 { get; set; }
            public int MidSpellPercent_2 { get; set; }
            public int MidSpellLVL_2 { get; set; }
            public int MidSpell_3 { get; set; }
            public int MidSpellPercent_3 { get; set; }
            public int MidSpellLVL_3 { get; set; }
            public int MidSpell_4 { get; set; }
            public int MidSpellPercent_4 { get; set; }
            public int MidSpellLVL_4 { get; set; }
            public int DropItem_0 { get; set; }
            public int DropItemPercent_0 { get; set; }
            public int DropItem_1 { get; set; }
            public int DropItemPercent_1 { get; set; }
            public int DropItem_2 { get; set; }
            public int DropItemPercent_2 { get; set; }
            public int DropItem_3 { get; set; }
            public int DropItemPercent_3 { get; set; }
            public int DropItem_4 { get; set; }
            public int DropItemPercent_4 { get; set; }
            public int DropItem_5 { get; set; }
            public int DropItemPercent_5 { get; set; }
            public int DropItem_6 { get; set; }
            public int DropItemPercent_6 { get; set; }
            public int DropItem_7 { get; set; }
            public int DropItemPercent_7 { get; set; }
            public int DropItem_8 { get; set; }
            public int DropItemPercent_8 { get; set; }
            public int DropItem_9 { get; set; }
            public int DropItemPercent_9 { get; set; }
            public int Ability_0 { get; set; }
            public int AbilityValue_0 { get; set; }
            public int Ability_1 { get; set; }
            public int AbilityValue_1 { get; set; }
            public int Ability_2 { get; set; }
            public int AbilityValue_2 { get; set; }
            public int Ability_3 { get; set; }
            public int AbilityValue_3 { get; set; }
            public int Ability_4 { get; set; }
            public int AbilityValue_4 { get; set; }
            public int Ability_5 { get; set; }
            public int AbilityValue_5 { get; set; }
            public int Ability_6 { get; set; }
            public int AbilityValue_6 { get; set; }
            public int Ability_7 { get; set; }
            public int AbilityValue_7 { get; set; }
            public int Ability_8 { get; set; }
            public int AbilityValue_8 { get; set; }
            public int Ability_9 { get; set; }
            public int AbilityValue_9 { get; set; }
            public int InGame { get; set; }
            public string Summoned { get; set; }

            public List<ItemType> DroppedItems = new List<ItemType>();
            public List<AbilityType> AbilityList = new List<AbilityType>();
            public List<SpellType> SpellList = new List<SpellType>();
            public string SpellMonsterCast = "";

        }

        public class SpellType
        {
            public Int32 Number { get; set; }
            public string Name { get; set; }
            public string Short { get; set; }
            public Int32 ReqLevel { get; set; }
            public Int32 EnergyCost { get; set; }
            public int ManaCost { get; set; }
            public Int32 MinBase { get; set; }
            public Int32 MaxBase { get; set; }
            public int Diff { get; set; }
            public Int32 Targets { get; set; }
            public Int32 Dur { get; set; }
            public int AttType { get; set; }
            public int Magery { get; set; }
            public int MageryLVL { get; set; }
            public int Cap { get; set; }
            public int MaxIncLVLs { get; set; }
            public int MaxInc { get; set; }
            public int MinIncLVLs { get; set; }
            public int MinInc { get; set; }
            public int DurIncLVLs { get; set; }
            public Int32 DurInc { get; set; }
            public int Abil_0 { get; set; }
            public int AbilVal_0 { get; set; }
            public int Abil_1 { get; set; }
            public int AbilVal_1 { get; set; }
            public int Abil_2 { get; set; }
            public int AbilVal_2 { get; set; }
            public int Abil_3 { get; set; }
            public int AbilVal_3 { get; set; }
            public int Abil_4 { get; set; }
            public int AbilVal_4 { get; set; }
            public int Abil_5 { get; set; }
            public int AbilVal_5 { get; set; }
            public int Abil_6 { get; set; }
            public int AbilVal_6 { get; set; }
            public int Abil_7 { get; set; }
            public int AbilVal_7 { get; set; }
            public int Abil_8 { get; set; }
            public int AbilVal_8 { get; set; }
            public int Abil_9 { get; set; }
            public int AbilVal_9 { get; set; }
            public int Learnable { get; set; }
            public string Learned_From { get; set; }
            public string Casted { get; set; }
        }

        public class RoomType
        {
            public int MapNumber;
            public int RoomNumber;
            public string RoomName;
            public int ShopID;
            public int NpcID;
            public int CmdID;
            public int SpellID;
            public string LairInformation;
            public string Placed;
            public string DirectionNorth;
            public string DirectionSouth;
            public string DirectionEast;
            public string DirectionWest;
            public string DirectionNorthEast;
            public string DirectionNorthWest;
            public string DirectionSouthEast;
            public string DirectionSouthWest;
            public string DirectionUp;
            public string DirectionDown;
        }

        public struct AbilityType
        {
            public int AbilityID;
            public int AbilityValue;
            public string AbilityName;
        }

        public class ItemType
        {
          

            public int Number;
            public string Name;
            public int Limit;
            public int Encum;
            public int Item_Type;
            public int UseCount;
            public int Price;
            public int Currency;
            public int Min;
            public int Max;
            public int ArmourClass;
            public int DamageResist;
            public int WeaponType;
            public int ArmourType;
            public int Worn;
            public int Accuracy;
            public int Gettable;
            public int StrRequired;
            public int Speed;
            public int NotDroppable;
            public int DestoryOnDeath;
            public int RetainAfterUses;
            public int ClassRestriction_0;
            public int ClassRestriction_1;
            public int ClassRestriction_2;
            public int ClassRestriction_3;
            public int ClassRestriction_4;
            public int ClassRestriction_5;
            public int ClassRestriction_6;
            public int ClassRestriction_7;
            public int ClassRestriction_8;
            public int ClassRestriction_9;
            public int RaceRestriction_0;
            public int RaceRestriction_1;
            public int RaceRestriction_2;
            public int RaceRestriction_3;
            public int RaceRestriction_4;
            public int RaceRestriction_5;
            public int RaceRestriction_6;
            public int RaceRestriction_7;
            public int RaceRestriction_8;
            public int RaceRestriction_9;
            public int NegateSpell_0;
            public int NegateSpell_1;
            public int NegateSpell_2;
            public int NegateSpell_3;
            public int NegateSpell_4;
            public int NegateSpell_5;
            public int NegateSpell_6;
            public int NegateSpell_7;
            public int NegateSpell_8;
            public int NegateSpell_9;
            public int Ability_0;
            public int AbilityValue_0;
            public int Ability_1;
            public int AbilityValue_1;
            public int Ability_2;
            public int AbilityValue_2;
            public int Ability_3;
            public int AbilityValue_3;
            public int Ability_4;
            public int AbilityValue_4;
            public int Ability_5;
            public int AbilityValue_5;
            public int Ability_6;
            public int AbilityValue_6;
            public int Ability_7;
            public int AbilityValue_7;
            public int Ability_8;
            public int AbilityValue_8;
            public int Ability_9;
            public int AbilityValue_9;
            public int Ability_10;
            public int AbilityValue_10;
            public int Ability_11;
            public int AbilityValue_11;
            public int Ability_12;
            public int AbilityValue_12;
            public int Ability_13;
            public int AbilityValue_13;
            public int Ability_14;
            public int AbilityValue_14;
            public int Ability_15;
            public int AbilityValue_15;
            public int Ability_16;
            public int AbilityValue_16;
            public int Ability_17;
            public int AbilityValue_17;
            public int Ability_18;
            public int AbilityValue_18;
            public int Ability_19;
            public int AbilityValue_19;
            public int InGame;
            public string ObtainedFrom;

            public List<AbilityType> Abilities = new List<AbilityType>();


        }

        public class ClassType
        {
            public int ClassNumber;
            public string ClassName;
            public int MinHits;
            public int MaxHits;
            public int ExpTable;
            public int MageryType;
            public int MageryLevel;
            public int WeaponType;
            public int ArmourType;
            public int CombatLevel;
            public List<AbilityType> ClassAbilityList = new List<AbilityType>();
        }

        public class RaceType
        {
            public int RaceNumber;
            public string RaceName;
            public int MinIntellect;
            public int MaxIntellect;
            public int MinWillpower;
            public int MaxWillpower;
            public int MinStrength;
            public int MaxStrength;
            public int MinHealth;
            public int MaxHealth;
            public int MinAgility;
            public int MaxAgility;
            public int MinCharm;
            public int MaxCharm;
            public int HitpointsPerLevel;
            public int ExpTable;
            public int BaseCP;
            public List<AbilityType> RaceAbilityList = new List<AbilityType>();
        }
    }
}
